/*
 *   Copyright (C) Key Bridge Global LLC and/or its affiliates.
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.keybridgeglobal.wsif;

import com.keybridgeglobal.wsif.enumerated.EnumRegistrar;
import com.keybridgeglobal.wsif.enumerated.EnumWsifWirelessServiceType;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.xml.bind.annotation.*;

/**
 * <p>Java class for wirelessService complex type.
 * <p/>
 * <p>The following schema fragment specifies the expected content contained
 * within this class.
 * <p/>
 * <
 * pre> &lt;complexType name="wirelessService"> &lt;complexContent>
 * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 * &lt;sequence> &lt;element name="wirelessServiceType"
 * type="{}enumWsifWirelessServiceType"/> &lt;element name="extension"
 * type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> &lt;element
 * ref="{}license"/> &lt;element ref="{}registrar"/> &lt;element
 * name="contactList" type="{}contact" maxOccurs="unbounded"/> &lt;element
 * name="stationList" type="{}station" maxOccurs="unbounded"/> &lt;element
 * name="whitespaceRegistrationList" type="{}whitespaceRegistration"
 * maxOccurs="unbounded" minOccurs="0"/> &lt;/sequence> &lt;attribute
 * name="uuid" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
 * &lt;attribute name="name" use="required"
 * type="{http://www.w3.org/2001/XMLSchema}string" /> &lt;attribute
 * name="description" type="{http://www.w3.org/2001/XMLSchema}string" />
 * &lt;attribute name="dateCreated" use="required"
 * type="{http://www.w3.org/2001/XMLSchema}dateTime" /> &lt;attribute
 * name="dateEffective" use="required"
 * type="{http://www.w3.org/2001/XMLSchema}dateTime" /> &lt;attribute
 * name="dateExpiration" use="required"
 * type="{http://www.w3.org/2001/XMLSchema}dateTime" /> &lt;attribute
 * name="dateLastUpdated" use="required"
 * type="{http://www.w3.org/2001/XMLSchema}dateTime" /> &lt;/restriction>
 * &lt;/complexContent> &lt;/complexType>
 * </pre>
 * <p/>
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "wirelessService", propOrder = {
  "wirelessServiceType",
  "extension",
  "license",
  "registrar",
  "contactList",
  "stationList",
  "whitespaceRegistrationList"
})
@XmlRootElement
public class WirelessService {

  @XmlElement(required = true)
  protected EnumWsifWirelessServiceType wirelessServiceType;
  @XmlElement(required = false)
  protected String extension;
  @XmlElement(required = true)
  protected License license;
  @XmlElement(required = true)
  protected EnumRegistrar registrar;
  @XmlElement(required = true)
  protected List<Contact> contactList;
  @XmlElement(required = true)
  protected List<Station> stationList;
  @XmlElement(required = false)
  protected List<WhitespaceRegistration> whitespaceRegistrationList;
  @XmlAttribute(name = "uuid", required = true)
  protected String uuid;
  @XmlAttribute(name = "name", required = true)
  protected String name;
  @XmlAttribute(name = "description")
  protected String description;
  @XmlAttribute(name = "dateCreated", required = true)
  @XmlSchemaType(name = "dateTime")
  protected Date dateCreated;
  @XmlAttribute(name = "dateEffective", required = true)
  @XmlSchemaType(name = "dateTime")
  protected Date dateEffective;
  @XmlAttribute(name = "dateExpiration", required = true)
  @XmlSchemaType(name = "dateTime")
  protected Date dateExpiration;
  @XmlAttribute(name = "dateLastUpdated", required = true)
  @XmlSchemaType(name = "dateTime")
  protected Date dateLastUpdated;

  /**
   * Gets the value of the wirelessServiceType property.
   * <p/>
   * @return possible object is {@link EnumWsifWirelessServiceType }
   *
   */
  public EnumWsifWirelessServiceType getWirelessServiceType() {
    return wirelessServiceType;
  }

  /**
   * Sets the value of the wirelessServiceType property.
   * <p/>
   * @param value allowed object is {@link EnumWsifWirelessServiceType }
   *
   */
  public void setWirelessServiceType(EnumWsifWirelessServiceType value) {
    this.wirelessServiceType = value;
  }

  /**
   * Gets the value of the extension property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getExtension() {
    return extension;
  }

  /**
   * Sets the value of the extension property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setExtension(String value) {
    this.extension = value;
  }

  /**
   * Gets the value of the license property.
   * <p/>
   * @return possible object is {@link License }
   *
   */
  public License getLicense() {
    return license;
  }

  /**
   * Sets the value of the license property.
   * <p/>
   * @param value allowed object is {@link License }
   *
   */
  public void setLicense(License value) {
    this.license = value;
  }

  /**
   * Gets the value of the registrar property.
   * <p/>
   * @return possible object is {@link Registrar }
   *
   */
  public EnumRegistrar getRegistrar() {
    return registrar;
  }

  /**
   * Sets the value of the registrar property.
   * <p/>
   * @param value allowed object is {@link Registrar }
   *
   */
  public void setRegistrar(EnumRegistrar value) {
    this.registrar = value;
  }

  /**
   * Gets the value of the contactList property.
   * <p/>
   * <p> This accessor method returns a reference to the live list, not a
   * snapshot. Therefore any modification you make to the returned list will be
   * present inside the JAXB object. This is why there is not a
   * <CODE>set</CODE> method for the contactList property.
   * <p/>
   * <p> For example, to add a new item, do as follows:
   * <pre>
   *    getContactList().add(newItem);
   * </pre>
   * <p/>
   *
   * <p> Objects of the following type(s) are allowed in the list
     * {@link Contact }
   *
   *
   */
  public List<Contact> getContactList() {
    if (contactList == null) {
      contactList = new ArrayList<Contact>();
    }
    return this.contactList;
  }

  /**
   * Gets the value of the stationList property.
   * <p/>
   * <p> This accessor method returns a reference to the live list, not a
   * snapshot. Therefore any modification you make to the returned list will be
   * present inside the JAXB object. This is why there is not a
   * <CODE>set</CODE> method for the stationList property.
   * <p/>
   * <p> For example, to add a new item, do as follows:
   * <pre>
   *    getStationList().add(newItem);
   * </pre>
   * <p/>
   *
   * <p> Objects of the following type(s) are allowed in the list
     * {@link Station }
   *
   *
   */
  public List<Station> getStationList() {
    if (stationList == null) {
      stationList = new ArrayList<Station>();
    }
    return this.stationList;
  }

  /**
   * Gets the value of the whitespaceRegistrationList property.
   * <p/>
   * <p> This accessor method returns a reference to the live list, not a
   * snapshot. Therefore any modification you make to the returned list will be
   * present inside the JAXB object. This is why there is not a
   * <CODE>set</CODE> method for the whitespaceRegistrationList property.
   * <p/>
   * <p> For example, to add a new item, do as follows:
   * <pre>
   *    getWhitespaceRegistrationList().add(newItem);
   * </pre>
   * <p/>
   *
   * <p> Objects of the following type(s) are allowed in the list
     * {@link WhitespaceRegistration }
   *
   *
   */
  public List<WhitespaceRegistration> getWhitespaceRegistrationList() {
    if (whitespaceRegistrationList == null) {
      whitespaceRegistrationList = new ArrayList<WhitespaceRegistration>();
    }
    return this.whitespaceRegistrationList;
  }

  /**
   * Gets the value of the uuid property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getUuid() {
    return uuid;
  }

  /**
   * Sets the value of the uuid property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setUuid(String value) {
    this.uuid = value;
  }

  /**
   * Gets the value of the name property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getName() {
    return name;
  }

  /**
   * Sets the value of the name property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setName(String value) {
    this.name = value;
  }

  /**
   * Gets the value of the description property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getDescription() {
    return description;
  }

  /**
   * Sets the value of the description property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setDescription(String value) {
    this.description = value;
  }

  /**
   * Gets the value of the dateCreated property.
   * <p/>
   * @return possible object is {@link Date }
   *
   */
  public Date getDateCreated() {
    return dateCreated;
  }

  /**
   * Sets the value of the dateCreated property.
   * <p/>
   * @param value allowed object is {@link Date }
   *
   */
  public void setDateCreated(Date value) {
    this.dateCreated = value;
  }

  /**
   * Gets the value of the dateEffective property.
   * <p/>
   * @return possible object is {@link Date }
   *
   */
  public Date getDateEffective() {
    return dateEffective;
  }

  /**
   * Sets the value of the dateEffective property.
   * <p/>
   * @param value allowed object is {@link Date }
   *
   */
  public void setDateEffective(Date value) {
    this.dateEffective = value;
  }

  /**
   * Gets the value of the dateExpiration property.
   * <p/>
   * @return possible object is {@link Date }
   *
   */
  public Date getDateExpiration() {
    return dateExpiration;
  }

  /**
   * Sets the value of the dateExpiration property.
   * <p/>
   * @param value allowed object is {@link Date }
   *
   */
  public void setDateExpiration(Date value) {
    this.dateExpiration = value;
  }

  /**
   * Gets the value of the dateLastUpdated property.
   * <p/>
   * @return possible object is {@link Date }
   *
   */
  public Date getDateLastUpdated() {
    return dateLastUpdated;
  }

  /**
   * Sets the value of the dateLastUpdated property.
   * <p/>
   * @param value allowed object is {@link Date }
   *
   */
  public void setDateLastUpdated(Date value) {
    this.dateLastUpdated = value;
  }
}
